package NO17;

public class Merge {
	public static class ListNode {
	    int val;
	    ListNode next = null;

	    ListNode(int val) {
	        this.val = val;
	    }
	}
	
	public static ListNode merge(ListNode list1,ListNode list2) {
        if(list1 == null){
            return list2;
        }
        if(list2 == null){
            return list1;
        }
        //合成后的链表的首节点
        ListNode head = null;
        //合成链表的当前节点
        ListNode node = null;
        
        while(list1!=null && list2!=null){
            //list1的元素比较小
            if(list1.val <= list2.val){
                //head为空的情况
                if(head == null){
                    node = head = list1;  
                }else{
                    node.next = list1;
                    node = node.next;
                }
                list1 = list1.next;
            }else{
                if(head == null){
                    node = head = list2;  
                }else{
                    node.next = list2;
                    node = node.next;
                }
                list2 = list2.next;
            }
        }
        //其中一个走到头了，另一个直接添加到尾部即可
        if(list1 == null){
            node.next = list2;
        }
        if(list2 == null){
            node.next = list1;
        }
        return head;
	}
}
